function getDonte(obj, target,callBake) { //  元素  移动距离
    //    函数优化 : 只要加了var变量,就会在内存里开辟一个空间,div和span调用,都会开辟不同的内存空间,要是有100个对象调用,它就会开辟100个空间,而且定时器的名字都一样了,给不同的元素添加不同的定时器,利用js是一门动态语言 可以很方便的给对象添加属性

    // 先清除以前的定时器 只保留当前的定时器(注意不要加在定时器里面)
    clearInterval(obj.times); 
    // 给不同的元素指定不同的定时器,定时器直接添加属性名obj
    obj.times = setInterval(function () {
        // 计算步长值 (目标值 - 现在的位置) / 10  先算减法 所以要加小括号 但是最终的的目标值因为计算有小点数所以不精确 用天花板函数真个括起来向上取整
        //  元素来回的计算都不精准 所以元素需要向上向下取整 这里可以用一下三元判断条件
        var step = (target - obj.offsetLeft) / 10;
        step = step > 0? Math.ceil(step) : Math.floor(step);
        if (obj.offsetLeft == target) {
            clearInterval(obj.times);
            // 回调函数写到定时器里面
            if(callBake) {  //  如果有callBake有传入参数就调用
                callBake();
            }
        }
        obj.style.left = obj.offsetLeft + step + 'px';
    }, 20);
}